#  利用map批量检测用户名是否符合规范=> username符合规范, username不符合规范
# • 只能包含数据、字母、下划线，不以数字开头，长度在6-18之间
# lst = ["wy123456_789","123","wy#1234567","123wyyyyyyyyyyy"]
# import re
# def func1(x):
#     if re.findall('^[a-zA-Z_]\w{5,17}$',x):
#         return f"{x}符合规范"
#     else:
#         return f"{x}不符合规范"
# print(list(map(func1,lst)))
# #  filter把合法的用户名显示出来
# print(list(filter(lambda x:re.findall('^[a-zA-Z_]\w{5,17}$',x),lst)))


# # 匿名函数+reduce实现 1*2*3*...*n
# from functools import reduce
# num=int(input("请输入一个数:"))
# print(reduce(lambda x,y : x*y,range(1,num+1)))


# # filter函数:找出[1-100]能被3整除的数
# print(list(filter(lambda x:x%3 == 0,[j for j in range(1,100)])))
#
# # map函数:求list[1-10]各项的平方
# print(list(map(lambda x : x**2,[1,2,3,4,5,6,7,8,9,10])))

#  有以下列表：list1=[7, -8, 5, 4, 0, -2, -5]
# • 正数在前负数在后
# • 整数从小到大
# • 负数从大到小
# list1 = [7, -8, 5, 4, 0, -2, -5]
# list1.sort(key=lambda x:x*-100 if x<0 else x )
# print(list1)

# 这是一个字符串排序，排序规则：小写<大写<奇数<偶数
# • s = 'asdf234GDSdsf23' #排序:小写-大写-奇数-偶数
# • 原理：先比较元组的第一个值，FALSE
s='asdf234GDSdsf23'
s2="".join(sorted(s, key=lambda x: (x.isdigit(),x.isdigit() and int(x)%2==0,x.isupper(),x)))
print(s2)
